An integer x is numerically balanced if for every digit d in the number x, there are exactly d occurrences of that digit in x.
Given an integer n, return the smallest numerically balanced number strictly greater than n.
題目大意是題目會給一個數字n,我們需要找到比n大的最小平衡數字
我的解題思路:
因為卡在把數字拆解的部分很~久,所以最後有借助AI之力!
class Solution {
public static boolean isBalanced(int x) {
// 記錄數字0-9的出現次數
int[] count = new int[10];
// 記錄每個數字的出現次數 //有參考chatgpt
int temp = x;
while (temp > 0) {
int digit = temp % 10; // 取出最後一位數字
count[digit]++; // 更新對應的數字計數
temp /= 10; // 去掉最後一位
}
// 再次遍歷原數字,檢查是否滿足數字平衡的條件
temp = x;
while (temp > 0) {
int digit = temp % 10;
if (count[digit] != digit) {
return false;
}
temp /= 10;
}
return true;
}
public int nextBeautifulNumber(int n) {
int x = n + 1;
// 增加x,直到找到數值平衡的數字
while (!isBalanced(x)) {
x++;
}
return x;
}
}
丟去leetcode檢查答案!
通過!睡覺!